package HomeWork240920;

import java.util.Scanner;
import java.util.Arrays;

public class HomeWork240920
{
    public static void main1(String args[]) {
        int[] a = {70, 120, 30};
    // 【代码1】	//输出数组a的长度
        System.out.println(a.length);
//    【代码2】	//输出数组a的引用
        System.out.println(a);
        /*
        * 【代码2】输出数组a的引用是什么意思
        在Java中，数组的引用指的是数组在内存中的地址。
        * 当你说要输出数组a的引用时，实际上是指输出数组a在内存中的位置信息。
        * 在Java中，当打印一个数组对象时，默认会调用该对象的toString()方法，该方法会返回一个表示对象内存地址的字符串。

        以下是修改后的【代码2】部分，它会打印出数组a的引用（即内存地址）：
        System.out.println(a); //【代码2】输出数组a的引用
        * */
        int b[][] = {{1}, {1,1}, {1,2,1}, {1,3,3,1}, {1,4,6,4,1}};
//    【代码3】	//输出数组b的长度
        System.out.println(b.length);
//    【代码4】	//输出数组b第3个元素的长度
        System.out.println(b[2].length);

        System.out.println(b[4][2]);
//    【代码5】	//将数组a的引用赋给b[4];
        b[4] = a;

        System.out.println(b[4][2]);
    }

    public static void main(String[] args) {
        /*
        * 按如下要求编写程序：
        * (1)编写一个求一维数组最大及最小值的方法；
        * （2）编写一个求一维数组元素之和的方法；
        * （3）在main方法中定义一个由10个元素组成的一维数组，并调用第（1）、（2）步中编写的方法求该数组中的最大值、最小值和所有元素总和。(数组作为方法的参数)
        * */
        int a[] = {70, 120, 30, 20, 401, 23, 2304, 320, 41, 5};
        int max = a[0];
        int min = a[0];
//        long long sum = 0;
        long sum = 0;// java中没有long long

        for (int i = 1; i < a.length; i++)
        {
            if (a[i] < min)
                min = a[i];
            if (a[i] > max)
                max = a[i];

            sum += a[i];
        }

        System.out.println("max = " + max);
        System.out.println("min = " + min);
        System.out.println("sum = " + sum);
    }

    public static void main2(String[] args) {
        /*
         编写程序，创建1个长度为5的数组source和1个长度为10的数组target，
         从键盘输入5个整数作为数组source的元素,分别使用下面方法将数组元素复制到数组target中，
         并对数组target中元素进行升序排列。( 程序中两个数组的名字请任意改成其它名字，不要用题干中用到的名字source和target  )。
        1）使用Arrays类中的copyOf()或copyOfRange()方法进行复制；
        2）使用Arrays类中的sort()方法对数组元素进行排序。
        3）使用Arrays类中的toString()方法的返回值做为参数，输出数组元素。
        */

        int[] source = new int[5];// 注意数组的写法
        int[] target = new int[10];
        Scanner scan = new Scanner(System.in);

        for (int i = 0; i < 5; i++)
            source[i] = scan.nextInt();

        target = Arrays.copyOf(source, source.length);

        Arrays.sort(target, 0, 5/*target.length*/);

        System.out.println("target的数组元素：" + Arrays.toString(target));
    }
}